package dzienPracy;

import org.joda.time.DateTime;
import org.joda.time.Period;

import javax.print.attribute.standard.DateTimeAtCompleted;
import java.io.Serializable;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;


public class DzienPracy implements Serializable {    // ---> implementując ten interfejs możemy zapisywać obiekty dzień pracy do pliku
    private Date data;
    private int iloscPrzepracowanychGodzin;
    private int iloscPrzepracowanychMinut;
    private DateTime czasRozpoczeciaPracy;
    private DateTime czasZakonczeniaPracy;
    private String iloscPrzepracowanychGodzinST;

    public DzienPracy(Date data, DateTime czasRozpoczeciaPracy, DateTime czasZakonczeniaPracy) {
        this.data = data;
        this.czasRozpoczeciaPracy = czasRozpoczeciaPracy;
        this.czasZakonczeniaPracy = czasZakonczeniaPracy;

        obliczIloscPrzepracowanychGodzin();
    }

    private void obliczIloscPrzepracowanychGodzin() {
        Period period = new Period(czasRozpoczeciaPracy, czasZakonczeniaPracy);
        iloscPrzepracowanychGodzin = period.getHours();
        iloscPrzepracowanychMinut = period.getMinutes();
        iloscPrzepracowanychGodzinST = iloscPrzepracowanychGodzin + " godz. " + iloscPrzepracowanychMinut + " min. " ;
    }

    public String getGodzinePrzyjsciaST(){
        String dodatek ="";
        if (czasRozpoczeciaPracy.getMinuteOfHour()<10){
            dodatek = "0";
        }
        return czasRozpoczeciaPracy.getHourOfDay() + ":" + dodatek + czasRozpoczeciaPracy.getMinuteOfHour();
    }

    public String getGodzineWyjsciaST(){
        String dodatek ="";
        if (czasZakonczeniaPracy.getMinuteOfHour()<10){
            dodatek = "0";
        }
        return czasZakonczeniaPracy.getHourOfDay() + ":" + dodatek + czasZakonczeniaPracy.getMinuteOfHour();
    }


    public int getIloscPrzepracowanychGodzin() {
        return iloscPrzepracowanychGodzin;
    }

    public int getIloscPrzepracowanychMinut() {
        return iloscPrzepracowanychMinut;
    }

    public String getIloscPrzepracowanychGodzinST() {
        return iloscPrzepracowanychGodzinST;
    }

    public String getDataString() {
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
        return dateFormat.format(data);
    }

    public Date getData() {
        return data;
    }

    @Override
    public String toString() {
        return "DzienPracy{" +
                "data=" + data +
                ", iloscPrzepracowanychGodzin=" + iloscPrzepracowanychGodzin +
                ", iloscPrzepracowanychMinut=" + iloscPrzepracowanychMinut +
                ", iloscPrzepracowanychGodzinST='" + iloscPrzepracowanychGodzinST + '\'' +
                ", czasRozpoczeciaPracy=" + czasRozpoczeciaPracy +
                ", czasZakonczeniaPracy=" + czasZakonczeniaPracy +
                '}';
    }
}
